package fr.utbm.gi.vi51.project.behavior;

import java.util.List;

import javax.vecmath.Point2d;
import javax.vecmath.Vector2d;

public interface EscapeBehaviour<OUT extends BehaviourOutput> {

	/**
	 * @param position is the current position of the entity.
	 * @param orientation is the current orientation of the entity.
	 * @param linearSpeed is the current linear speed of the entity.
	 * @param maxLinear is the maximal linear speed or acceleration (depending on getType()) of the entity.
	 * @param angularSpeed is the current angular speed of the entity.
	 * @param maxAngular is the maximal angular speed or acceleration (depending on getType()) of the entity.
	 * @return the behaviour output.
	 */
	public OUT runEscape(Point2d position, Vector2d orientation, double linearSpeed, double maxLinear,
			double angularSpeed, double maxAngular, List<Point2d> perceivedObstaclesPositions);

}